import request from '@/utils/request';

/**
 * 查询基础复盘项目所需的枚举选项
 * <p>
 * @return {Promise}
 */
export function getBaseEnums() {
  return request({
    url: '/txs/salon_diagnose/base/enums',
    method: 'get',
  });
}

/**
 * 添加基础复盘信息
 * <p>
 * @param {Object} data 门店基础复盘信息
 * @return {Promise}
 */
export function addBaseDiagnose(data) {
  return request({
    url: '/txs/salon_diagnose/base',
    method: 'post',
    data: data,
  });
}

/**
 * 删除基础复盘信息
 * <p>
 * @param {number} id 主键ID
 * @return {Promise}
 */
export function delBaseDiagnose(id) {
  return request({
    url: '/txs/salon_diagnose/base',
    method: 'delete',
    params: { id },
  });
}

/**
 * 修改基础复盘信息
 * <p>
 * @param {Object} data 门店基础复盘信息
 * @return {Promise}
 */
export function updateBaseDiagnose(data) {
  return request({
    url: '/txs/salon_diagnose/base',
    method: 'put',
    data: data,
  });
}

/**
 * 查询上一个复盘信息
 * <p>
 * @param {number} sid 门店ID
 * @return {Promise}
 */
export function getBaseDiagnoseLast(sid) {
  return request({
    url: '/txs/salon_diagnose/base/last',
    method: 'get',
    params: { sid },
  });
}

/**
 * 查询复盘信息列表
 *
 * @param {number} pageNumber
 * @param {number} pageSize
 * @param {number} sid 门店ID
 * @param {string} diagnoseNo 诊断单号, 模糊搜索
 * @return {Promise}
 */
export function getBaseDiagnosePage(pageNumber, pageSize, sid, diagnoseNo) {
  return request({
    url: '/txs/salon_diagnose/base/page/history',
    method: 'get',
    params: { pageNumber, pageSize, sid, diagnoseNo },
  });
}

/**
 * 根据诊断单号, 查询属于这个诊断单号的所有业绩复盘信息
 * @param {string} diagnoseNo 诊断单号
 * @return {Promise}
 */
export function getPerfDiagnoseByNo(diagnoseNo) {
  return request({
    url: '/txs/salon_diagnose/perf/all',
    method: 'get',
    params: { diagnoseNo },
  });
}

/**
 * 根据诊断单号, 保存业绩诊断信息
 * @param {string} diagnoseNo 诊断单号
 * @param {Object} row 业绩诊断信息
 * @return {Promise}
 */
export function savePerfDiagnoseByNo(diagnoseNo, row) {
  return request({
    url: `/txs/salon_diagnose/perf/save/${diagnoseNo}`,
    method: 'put',
    data: row,
  });
}

/**
 * 删除业绩诊断信息
 * @param {number} id 主键id
 * @return {Promise}
 */
export function delPerfDiagnoseById(id) {
  return request({
    url: '/txs/salon_diagnose/perf/del',
    method: 'delete',
    params: { id },
  });
}

/**
 * 根据诊断单号, 查询属于这个诊断单号的老客复盘信息
 * @param {string} diagnoseNo 诊断单号
 * @return {Promise}
 */
export function getStockDiagnoseByNo(diagnoseNo) {
  return request({
    url: '/txs/salon_diagnose/stock',
    method: 'get',
    params: { diagnoseNo },
  });
}

/**
 * 根据诊断单号, 保存老客复盘信息
 * @param {string} diagnoseNo 诊断单号
 * @param {Object} data 老客复盘信息列表
 * @return {Promise}
 */
export function saveStockDiagnoseByNo(diagnoseNo, data) {
  return request({
    url: `/txs/salon_diagnose/stock/save/${diagnoseNo}`,
    method: 'put',
    data: data,
  });
}

/**
 * 查询门店顾客标签占比
 *
 * @param {number} sid 门店 id
 * @param {string} minDate 最小顾客注册日期, yyyy-MM-dd 格式
 * @return {Promise}
 */
export function getStockDiagnoseTagsPct(sid, minDate) {
  return request({
    url: '/txs/salon_diagnose/stock/tags/percent',
    method: 'get',
    params: { sid, minDate },
  });
}

/**
 * 查询员工复盘项目所需的枚举选项
 * <p>
 * @return {Promise}
 */
export function getStaffEnums() {
  return request({
    url: '/txs/salon_diagnose/staff/enums',
    method: 'get',
  });
}

/**
 * 根据诊断单号, 查询属于这个诊断单号的所有员工复盘信息.
 * <p>
 * 如果当期诊断单号还没有员工诊断信息， 则查询最近一期复盘填写的员工诊断信息
 * @param {number} sid 门店Id
 * @param {string} diagnoseNo 诊断单号
 * @return {Promise}
 */
export function getStaffDiagnoseByNo(sid, diagnoseNo) {
  return request({
    url: '/txs/salon_diagnose/staff/all',
    method: 'get',
    params: { sid, diagnoseNo },
  });
}

/**
 * 删除员工信息
 * @param {number} id 主键id
 * @return {Promise}
 */
export function delStaffDiagnoseById(id) {
  return request({
    url: '/txs/salon_diagnose/staff/del',
    method: 'delete',
    params: { id },
  });
}

/**
 * 根据诊断单号, 保存员工复盘信息
 *
 * @param {number} sid 门店Id
 * @param {string} diagnoseNo 诊断单号
 * @param {Object} data 员工信息
 * @return {Promise}
 */
export function saveStaffDiagnoseByNo(sid, diagnoseNo, data) {
  return request({
    url: `/txs/salon_diagnose/staff/one/${sid}/${diagnoseNo}`,
    method: 'put',
    data: data,
  });
}

/**
 * 根据诊断单号, 保存汇报线梳理信息
 * @param {string} diagnoseNo 诊断单号
 * @param {Object} data 汇报线梳理
 * @return {Promise}
 */
export function saveStaffDiagnoseOrg(diagnoseNo, data) {
  return request({
    url: `/txs/salon_diagnose/staff/org/${diagnoseNo}`,
    method: 'put',
    data: data,
  });
}

/**
 * 获取员工咨询单图片
 * @param {number} sid 门店Id
 * @param {number} id 员工Id
 * @return {Promise}
 */
export function getStaffDiagnoseZxd(sid, id) {
  return request({
    url: '/txs/salon_diagnose/staff/zxdPic',
    method: 'get',
    params: { sid, id },
  });
}

/**
 * 根据诊断单号, 查询属于这个诊断单号的A活动（1对N）运营
 *
 * @param {string} diagnoseNo 诊断单号
 * @return {Promise}
 */
export function getOpaADiagnoseByNo(diagnoseNo) {
  return request({
    url: '/txs/salon_diagnose/opa/all/a',
    method: 'get',
    params: { diagnoseNo },
  });
}

/**
 * 删除A活动（1对N）运营
 *
 * @param {number} id 主键id
 * @return {Promise}
 */
export function delOpaADiagnoseById(id) {
  return request({
    url: '/txs/salon_diagnose/opa/del/a',
    method: 'delete',
    params: { id },
  });
}

/**
 * 根据诊断单号, 保存A活动（1对N）运营
 *
 * @param {string} diagnoseNo 诊断单号
 * @param {Object} data A活动（1对N）运营
 * @return {Promise}
 */
export function saveOpaADiagnoseByNo(diagnoseNo, data) {
  return request({
    url: `/txs/salon_diagnose/opa/save/a/${diagnoseNo}`,
    method: 'put',
    data: data,
  });
}

/**
 * 查询 B离院(1对1)运营 所需枚举
 *
 * @return {Promise}
 */
export function getOpaBEnums() {
  return request({
    url: '/txs/salon_diagnose/opa/enums/b',
  });
}

/**
 * 根据诊断单号, 查询属于这个诊断单号的B离院(1对1)运营
 *
 * @param {string} diagnoseNo 诊断单号
 * @return {Promise}
 */
export function getOpaBDiagnoseByNo(diagnoseNo) {
  return request({
    url: '/txs/salon_diagnose/opa/get/b',
    method: 'get',
    params: { diagnoseNo },
  });
}

/**
 * 根据诊断单号, 保存B离院(1对1)运营
 *
 * @param {string} diagnoseNo 诊断单号
 * @param {Object} data B离院(1对1)运营
 * @return {Promise}
 */
export function saveOpaBDiagnoseByNo(diagnoseNo, data) {
  return request({
    url: `/txs/salon_diagnose/opa/save/b/${diagnoseNo}`,
    method: 'put',
    data: data,
  });
}

/**
 * 根据诊断单号, 查询属于这个诊断单号的C到院(1对1)运营
 *
 * @param {string} diagnoseNo 诊断单号
 * @return {Promise}
 */
export function getOpaCDiagnoseByNo(diagnoseNo) {
  return request({
    url: '/txs/salon_diagnose/opa/get/c',
    method: 'get',
    params: { diagnoseNo },
  });
}

/**
 * 根据诊断单号, 保存C到院(1对1)运营
 *
 * @param {string} diagnoseNo 诊断单号
 * @param {Object} data C到院(1对1)运营
 * @return {Promise}
 */
export function saveOpaCDiagnoseByNo(diagnoseNo, data) {
  return request({
    url: `/txs/salon_diagnose/opa/save/c/${diagnoseNo}`,
    method: 'put',
    data: data,
  });
}

/**
 * 根据诊断单号, 查询属于这个诊断单号的所有产品复盘信息
 * @param {string} diagnoseNo 诊断单号
 * @return {Promise}
 */
export function geProdDiagnoseByNo(diagnoseNo) {
  return request({
    url: '/txs/salon_diagnose/prod/all',
    method: 'get',
    params: { diagnoseNo },
  });
}

/**
 * 根据诊断单号, 保存产品复盘信息
 * @param {string} diagnoseNo 诊断单号
 * @param {Object} row 产品复盘信息
 * @return {Promise}
 */
export function saveProdDiagnoseByNo(diagnoseNo, row) {
  return request({
    url: `/txs/salon_diagnose/prod/save/${diagnoseNo}`,
    method: 'put',
    data: row,
  });
}

/**
 * 删除产品复盘信息
 * @param {number} id 主键id
 * @return {Promise}
 */
export function delProdDiagnoseById(id) {
  return request({
    url: '/txs/salon_diagnose/prod/del',
    method: 'delete',
    params: { id },
  });
}

/**
 * 根据诊断单号, 查询属于这个诊断单号的所有制度诊断信息
 * @param {string} diagnoseNo 诊断单号
 * @return {Promise}
 */
export function geCharterDiagnoseByNo(diagnoseNo) {
  return request({
    url: '/txs/salon_diagnose/charter',
    method: 'get',
    params: { diagnoseNo },
  });
}

/**
 * 根据诊断单号, 保存制度诊断信息
 * @param {string} diagnoseNo 诊断单号
 * @param {Object} row 制度诊断信息
 * @return {Promise}
 */
export function saveCharterDiagnoseByNo(diagnoseNo, row) {
  return request({
    url: `/txs/salon_diagnose/charter/save/${diagnoseNo}`,
    method: 'put',
    data: row,
  });
}

/**
 * 根据诊断单号, 查询属于这个诊断单号的所有成本复盘信息
 * @param {string} diagnoseNo 诊断单号
 * @return {Promise}
 */
export function geCostDiagnoseByNo(diagnoseNo) {
  return request({
    url: '/txs/salon_diagnose/cost/all',
    method: 'get',
    params: { diagnoseNo },
  });
}

/**
 * 根据诊断单号, 保存成本复盘信息
 * @param {string} diagnoseNo 诊断单号
 * @param {Object} row 成本复盘信息
 * @return {Promise}
 */
export function saveCostDiagnoseByNo(diagnoseNo, row) {
  return request({
    url: `/txs/salon_diagnose/cost/save/${diagnoseNo}`,
    method: 'put',
    data: row,
  });
}

/**
 * 删除成本复盘信息
 * @param {number} id 主键id
 * @return {Promise}
 */
export function delCostDiagnoseById(id) {
  return request({
    url: '/txs/salon_diagnose/cost/del',
    method: 'delete',
    params: { id },
  });
}

/**
 * 根据诊断单号, 查询属于这个诊断单号的所有新客复盘信息
 * @param {string} diagnoseNo 诊断单号
 * @return {Promise}
 */
export function geChanDiagnoseByNo(diagnoseNo) {
  return request({
    url: '/txs/salon_diagnose/chan',
    method: 'get',
    params: { diagnoseNo },
  });
}

/**
 * 根据诊断单号, 保存新客复盘信息
 * @param {string} diagnoseNo 诊断单号
 * @param {Object} row 新客复盘信息
 * @return {Promise}
 */
export function saveChanDiagnoseByNo(diagnoseNo, row) {
  return request({
    url: `/txs/salon_diagnose/chan/save/${diagnoseNo}`,
    method: 'put',
    data: row,
  });
}

/**
 * 删除新客复盘信息
 * @param {number} id 主键id
 * @return {Promise}
 */
export function delChanDiagnoseById(id) {
  return request({
    url: '/txs/salon_diagnose/chan/del',
    method: 'delete',
    params: { id },
  });
}

/**
 * 根据诊断单号, 查询属于这个诊断单号的所有合规性复盘信息
 * @param {string} diagnoseNo 诊断单号
 * @return {Promise}
 */
export function geCheckDiagnoseByNo(diagnoseNo) {
  return request({
    url: '/txs/salon_diagnose/check',
    method: 'get',
    params: { diagnoseNo },
  });
}

/**
 * 根据诊断单号, 保存合规性复盘信息
 * @param {string} diagnoseNo 诊断单号
 * @param {Object} row 合规性复盘信息
 * @return {Promise}
 */
export function saveCheckDiagnoseByNo(diagnoseNo, row) {
  return request({
    url: `/txs/salon_diagnose/check/save/${diagnoseNo}`,
    method: 'put',
    data: row,
  });
}

/**
 * 删除合规性复盘信息
 * @param {number} id 主键id
 * @return {Promise}
 */
export function delCheckDiagnoseById(id) {
  return request({
    url: '/txs/salon_diagnose/check/del',
    method: 'delete',
    params: { id },
  });
}

/**
 * 根据诊断单号, 查询属于这个诊断单号的诊断评分信息
 * @param {string} diagnoseNo 诊断单号
 * @return {Promise}
 */
export function geMarkDiagnoseByNo(diagnoseNo) {
  return request({
    url: '/txs/salon_diagnose/mark',
    method: 'get',
    params: { diagnoseNo },
  });
}

/**
 * 根据诊断单号, 保存诊断评分信息
 * @param {string} diagnoseNo 诊断单号
 * @param {Object} row 诊断评分信息
 * @return {Promise}
 */
export function saveMarkDiagnoseByNo(diagnoseNo, row) {
  return request({
    url: `/txs/salon_diagnose/mark/save/${diagnoseNo}`,
    method: 'put',
    data: row,
  });
}

/**
 * 删除诊断评分信息
 * @param {number} id 主键id
 * @return {Promise}
 */
export function delMarkDiagnoseById(id) {
  return request({
    url: '/txs/salon_diagnose/mark/del',
    method: 'delete',
    params: { id },
  });
}

/**
 * 检查那些模块做了复盘
 *
 * @param {string} diagnoseNo 诊断单号
 * @return {Promise}
 */
export function checkMarkDiagnose(diagnoseNo) {
  return request({
    url: '/txs/salon_diagnose/mark/check/items',
    method: 'get',
    params: { diagnoseNo },
  });
}

/**
 * 根据门店ID, 查询属于这个门店ID的诊断时间线
 * @param {number} sid 门店ID
 * @return {Promise}
 */
export function geTimelineDiagnose(sid) {
  return request({
    url: '/txs/salon_diagnose/timeline/all',
    method: 'get',
    params: { sid },
  });
}

/**
 * 分页查询
 * @param {Object} params
 * @return {Promise}
 */
export function geTimelineDiagnosePage(params) {
  return request({
    url: '/txs/salon_diagnose/timeline/page',
    method: 'get',
    params: params,
  });
}

/**
 * 保存诊断时间线
 * @param {Object} row 诊断时间线
 * @return {Promise}
 */
export function saveTimelineDiagnose(row) {
  return request({
    url: '/txs/salon_diagnose/timeline',
    method: 'put',
    data: row,
  });
}

/**
 * 根据主键ID删除复盘时间线
 * @param {number} id 主键ID
 * @return {Promise}
 */
export function delTimelineDiagnose(id) {
  return request({
    url: '/txs/salon_diagnose/timeline',
    method: 'delete',
    params: { id },
  });
}

/**
 * 时间线上传文件
 * <p>
 * @param {FormData} formOfFile
 * @return {void}
 */
export function fileTimelineDiagnose(formOfFile) {
  return request({
    url: '/txs/salon_diagnose/timeline/upload',
    method: 'post',
    data: formOfFile,
  });
}
